package com.xhsj.user.sms.purchase.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import com.xhsj.user.sms.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 采购订单-主表
 * </p>
 *
 * @author suxiaolin
 * @since 2020-04-23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tb_purchase_order")
public class TbPurchaseOrder extends BaseEntity<TbPurchaseOrder> {

    private static final long serialVersionUID = 1L;

    /**
     * 采购申请id
     */
    @TableField("purchase_task_id")
    private String purchaseTaskId;

    /**
     * 订单编号
     */
    @TableField("order_number")
    private String orderNumber;

    /**
     * 归属项目
     */
    @TableField("belong_project")
    private String belongProject;

    /**
     * 采购类别  采购类别 1 低值易耗 2 固定资产 3整机 4组件 5样品制作 6原材料 其他
     */
    @TableField("category")
    private String category;

    /**
     * 经办人
     */
    @TableField("agent")
    private String agent;

    /**
     * 部门id
     */
    @TableField("dept_id")
    private String deptId;

    /**
     * 期望到货时间
     */

    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("arrival_time")
    private Date arrivalTime;

    /**
     * 预算范围
     */

    @TableField("budget_range")
    private String budgetRange;

    /**
     * 节点名称
     */
    @TableField("node_name")
    private String nodeName;

    /**
     * 供应商名称
     */
    @TableField("supplier_name")
    private String supplierName;

    /**
     * 总金额
     */
    @NotNull(message = "总金额不能为空")
    @TableField("total_money")
    private BigDecimal totalMoney;

    /**
     * 采购周期
     */
    @NotNull(message = "采购周期")
    @TableField("purchase_cycle")
    private String purchaseCycle;

//    /**
//     * 付款方式 1 一次结清 2 多次结清
//     */
//    @NotNull(message = "付款方式不能为空")
//    @TableField("payment_way")
//    private Integer paymentWay;

    /**
     * 初拟首付比例
     */
//    @TableField("advance_proportion")
//    private Integer advanceProportion;

    /**
     * 初拟二期款比例
     */
//    @TableField("second_proportion")
//    private Integer secondProportion;

    /**
     * 初拟尾款比例
     */
//    @TableField("final_proportion")
//    private Integer finalProportion;

    /**
     * 发起商务协调 0未发 1发起
     */
//    @TableField("business_negotiation")
//    private Integer businessNegotiation;

    /**
     * 终止合同 0无 1有
     */
//    @TableField("termination_contract")
//    private Integer terminationContract;

    /**
     * 物料不良记录 0无 1有
     */
//    @TableField("bad_records")
//    private Integer badRecords;

    /**
     * 送样次数
     */
//    @TableField("sample_delivery_times")
//    private Integer sampleDeliveryTimes;

    /**
     * 提交状态 1 保存 2 提交
     */
//    @NotNull(message = "提交状态不能为空")
    @TableField("submit_status")
    private Integer submitStatus = 1;

    /**
     * 处理状态
     */
    @TableField("deal_with_status")
    private String dealWithStatus;


//    @NotBlank(message = "节点id不能为空")
    @TableField(exist = false)
    private String nodeId;

    /**
     * 审核状态
     */
    @TableField("audit_status")
    private String auditStatus;

//    @NotBlank(message = "流程申请用户id")
    @TableField(exist = false)
    private String proposerId;

    /**
     * 采购商品列表
     */
    @Valid
    @TableField(exist = false)
    private List<TbPurchaseOrderGoods> purchaseOrderGoodsList = Lists.newArrayList();

    /**
     * 采购计划文件
     */
    @TableField(exist = false)
    private List<TbPurchaseOrderFile> purchasePlanFile = Lists.newArrayList();

    /**
     * 采购订单文件
     */
    @TableField(exist = false)
    private List<TbPurchaseOrderFile> purchaseOrderFile = Lists.newArrayList();

    /**
     * 采购询价单文件
     */
    @TableField(exist = false)
    private List<TbPurchaseOrderFile> purchaseEnquiryFile = Lists.newArrayList();

    @TableField(exist = false)
    private String payMentId;
//
//    /**
//     * 预付款金额
//     */
//    @TableField(exist = false)
//    private String advanceAmount;
//    /**
//     * 二期款金额
//     */
//    @TableField(exist = false)
//    private String secondAmount;
//    /**
//     * 尾款金额
//     */
//    @TableField(exist = false)
//    private String finalAmount;
    /**
     * 流程任务id
     */
    @TableField(exist = false)
    private String processTaskId;


    /*以下字段用于查询任务转出使用*/

    @TableField(exist = false)
    private List<Object> userList = Lists.newArrayList();


}
